package com.pig4cloud.pigx.wallet.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 修改合约账户参数枚举类
 *
 * @date 2022/8/29 17:50
 */
public enum WalletContractAccountDetailEnum {
	;

	/**
	 * 业务类型（0已实现盈亏、1资金费用、2手续费、3爆仓清算、4持仓保证金、5经纪人返佣）
	 */
	@Getter
	@AllArgsConstructor
	public enum BusinessType {
		/**
		 * 0 已实现盈亏
		 */
		PROFIT("已实现盈亏", "0"),
		/**
		 * 1 资金费用
		 */
		FUNDING_COSTS("资金费用", "1"),
		/**
		 * 2 手续费
		 */
		HANDLING_FEE("手续费", "2"),
		/**
		 * 3 爆仓清算
		 */
		CLEAR_FEE("爆仓清算", "3"),
		/**
		 * 4 持仓保证金
		 */
		POSITION_MARGIN("持仓保证金", "4"),
		/**
		 * 5 经纪人返佣
		 */
		COMMISSION("佣金","5");

		private final String name;
		private final String value;

		/**
		 * 根据name查找对应value
		 *
		 * @param name 枚举名称
		 * @return {@link String}
		 * @date 2021/11/14
		 * @since 1.0.0
		 */
		public static String findValue(String name) {
			for (BusinessType item : values()) {
				if (item.getName().equals(name)) {
					return item.getValue();
				}
			}

			return null;
		}

		/**
		 * 根据value查找对应的name
		 *
		 * @param value 枚举值
		 * @return {@link String}
		 * @date 2021/11/14
		 * @since 1.0.0
		 */
		public static String findName(String value) {
			for (BusinessType item : values()) {
				if (item.getValue().equals(value)) {
					return item.getName();
				}
			}

			return null;
		}
	}

	/**
	 * 操作类型（0冻结、1解冻、2增加、3减少）
	 */
	@Getter
	@AllArgsConstructor
	public enum OperationType {
		/**
		 * 0 冻结
		 */
		FREEZE("冻结", "0"),
		/**
		 * 1 解冻
		 */
		UN_FREEZE("解冻", "1"),
		/**
		 * 2 增加
		 */
		ADD("增加", "2"),
		/**
		 * 3 扣除
		 */
		MINUS("扣除", "3");

		private final String name;
		private final String value;

		/**
		 * 根据name查找对应value
		 *
		 * @param name 枚举名称
		 * @return {@link String}
		 * @date 2021/11/14
		 * @since 1.0.0
		 */
		public static String findValue(String name) {
			for (OperationType item : values()) {
				if (item.getName().equals(name)) {
					return item.getValue();
				}
			}

			return null;
		}

		/**
		 * 根据value查找对应的name
		 *
		 * @param value 枚举值
		 * @return {@link String}
		 * @date 2021/11/14
		 * @since 1.0.0
		 */
		public static String findName(String value) {
			for (OperationType item : values()) {
				if (item.getValue().equals(value)) {
					return item.getName();
				}
			}

			return null;
		}
	}
}
